package puzzle.hashikake.solver;

import puzzle.common.data.HatanException;
import puzzle.common.solver.BoardRule;
import puzzle.hashikake.data.HashiState;
import puzzle.hashikake.data.HashikakeBoard;

/**
 * 2と2が向かい合っていたらその間に2本の橋はない、というルール。
 */
class TwoTwoRule implements BoardRule<HashikakeBoard> {
	public boolean apply(HashikakeBoard b) throws HatanException {
		boolean isChanged = false;
		for (HashiState s : b.getHashiStates()) {
			if (s.def.car.n == 2 && s.def.cdr.n == 2) {
				isChanged |= s.setForbidden(2);
			}
		}
		return isChanged;
	}
}
